<!-- 
1.默认情况下进入登录页面作如下操作：（/login,/)
	1）如果没有登录，根据服务器返回结果跳转cAS或者停留在本页面等待输入用户名、密码
    2）如果已经登录，
		a)如果没有生成授权菜单，则动态生成路由信息
		b)入首页(/dashboard)或者进入授权的第一个菜单
		c)如果没有任何授权信息，则进入401页面
-->
<template>
    <div class="login-container">
      
      <div v-if="loading">
      <van-toast v-model:show="loading" style="padding: 0">
        <template #message>
          正在加载
        </template>
      </van-toast>
    </div>
      <div v-else class='loadWrapper'>
          <div v-if="connectError">
            <div>网络连接失败，请重试！</div>
            <van-button plain type="primary" @click="handleRefresh">重新加载</van-button>
          </div>

          <div v-if="redirectLogin">
            正在跳转登录页面...
          </div>
  
          
          
      </div>
    </div>
  </template>
  
  <script setup lang="ts">
  ////http://localhost:5173/site/form/receiveFile?id=98420

  import {onMounted,ref} from 'vue' 
  import {useUserStore} from '@/stores/index'
  import { useRouter } from 'vue-router';
  import http from '@/api/request'
  import { API_URL } from '@/util/SysConfig';
  import { useParamStore } from '@/stores/index';
import type { IUser } from '@/types';
  const paramStore = useParamStore();
  

  const loading = ref(true);
  const connectError = ref(false);
  const userStore = useUserStore();
  
  const router = useRouter();
  const redirectLogin = ref(false);

  onMounted(()=>{
    //获取用户信息
    http.get<IUser>('/sys/current_user')
    .then((resp)=>{
    
      loading.value = false;
      connectError.value = false;

      //设置当前用户
      if( resp.data){
        var userInfo = resp.data;
        if(userInfo)userStore.login(userInfo);

        //判断是否有权限，没有权限，跳转无权限
        if(userInfo.perms?.length == 0){
          router.replace("/403");
          return;
        }

        //跳转道首页（包含菜单的页面，此页面自动打开第一个菜单）

        const redirectURi = paramStore.redirectURI;

        console.log('redirectURi='+redirectURi)

        if(redirectURi != '' && redirectURi != null && redirectURi != '/'){
          //重新定向到 redirect url
          var context = import.meta.env.BASE_URL;
          router.push(redirectURi.substring(context.length)); 
        }else{
          router.push('/doc/');
        }

        paramStore.setRedirectURI('')
        paramStore.setRedirectURL('')

      }
      

    }).catch((err)=>{
      loading.value = false;
      if(err == '401'){
        redirectLogin.value = true;
      }else{
        connectError.value = true;
      }
    });

  });


  function  handleRefresh(){
      window.location.reload();
  }


  </script>
  
  <style lang="less" scoped>
.login-container{
    height:100vh;
    display: flex;
    flex-direction: column;
    justify-content: center;
  } 
  
  .loadWrapper{
    text-align: center;
  }
</style>
  